<?php

class PrestacionesPermitidasController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
			'postOnly + delete', // we only allow deletion via POST request
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete','administracion','buscarTrazadoras','volcarObjetoPrestacion','cargarPrestacionesPermitidas','cargarDescripcionPrestacion'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
        
        
        /**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=PrestacionesPermitidas::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='prestaciones-permitidas-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
        
        
        /*************************************************************/
        /*************** NUEVAS FUNCIONALIDADES    *******************/
        /*************************************************************/
        
        /**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
           $transaction = Yii::app()->db->beginTransaction();
           try{
                $this->loadModel($id)->delete();
                
                $logs = new LogsTransacciones;
                $logs->tabla = Yii::app()->getController()->getId();
                $logs->fecha = date('Y-m-d');
                $logs->usuario =  Yii::app()->user->name;
                $logs->operacion = 'ELIMINACION';
                $logs->comentarios = 'ELIMINACION - ' . $id;
                $logs->save();
                $transaction->commit();

                if(!isset($_GET['ajax']))
                    Yii::app()->user->setFlash('success','EXITO!!!. La eliminacion fue Exitosa.');
                else{
                 echo CJSON::encode(array(
                         'result'=>1,
                         'result_texto'=>'La Eliminacion fue Exitosa!!!',                       
                        ));
                    Yii::app()->end(); 
                    exit;
               }
            }catch(CDbException $e)
            { $transaction->rollBack();

                if(!isset($_GET['ajax']))
                    Yii::app()->user->setFlash('error','ERROR!!! No se puedo eliminar!!!');
                else
                    {
                 echo CJSON::encode(array(
                         'result'=>0,
                         'result_texto'=>'NO se pudo realizar la Eliminacion',
                        ));
                    Yii::app()->end(); 
                    exit;
               }
            }

                // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
                if(!isset($_GET['ajax']))
                    $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
	}    

        
          public function actionCargarPrestacionesPermitidas($idNomencladorUso=null)
	{       
            
          $this->layout = '//layouts/column1';           
          $transaction = Yii::app()->db->beginTransaction(); 
          $model = new PrestacionesPermitidas;
       
          try
          {  
            if (isset($_POST["idnomenclador"]))
                $idNomencladorUso = $_POST["idnomenclador"];
            else
            if (isset($_GET["idnomenclador"]))
                $idNomencladorUso = $_GET["idnomenclador"];
            //agregar una exepcion en caso de no traer nro de nomenclador, ya que no es posible generar la prestacion         
                  
            if(isset($_POST['PrestacionesPermitidas']))
            {
                $valid = true; 
                $model = new PrestacionesPermitidas;
                $model->attributes=$_POST['PrestacionesPermitidas'];
                
                if (empty($_POST["PrestacionesPermitidas"]["patologias"]))
                    $model->addError('id_patologia', 'Cargar la Patologia / s.'); 
                else
                    $patologias = $_POST["PrestacionesPermitidas"]["patologias"];
                   
                  
                if (!empty($patologias)){   
                    $models=array(); //para crear distintos modelos segun las patologias  si es que hay mas de una patologia
                    $i = 0;               
                    
                    foreach ($patologias as $id_pato){
                      if ($valid){
                        $model = new PrestacionesPermitidas;
                        $model->attributes=$_POST['PrestacionesPermitidas'];
                            
                        if ( ($_POST["PrestacionesPermitidas"]['requiere_trazadora1']==1) || ($_POST['requiere_trazadora1']=='1') )
                            $model->requiere_trazadora = $_POST["PrestacionesPermitidas"]["requiere_trazadora"];                                 
                        else
                            $model->requiere_trazadora = 0;
                        
                        $model->id_patologia =  $id_pato;
                        $valid = $model->validate();
                        $i += 1;
                        $models[$i] = $model;
                     }
                   }//fin del foreach
                }else $valid = false;
                
                if($valid){ 
                        foreach($models as $modelo)
                            $modelo->save();
                               
                    $transaction->commit();                                               
                    Yii::app()->user->setFlash('resultado_carga','El beneficiario se cargo correctamente!!!');
                    $this->redirect(array('cargarPrestacionesPermitidas', 'idNomencladorUso'=>$idNomencladorUso));
                 } //fin del valid
                 else{
                     $model->validate();                        
                     $transaction->rollBack();
                 }
                            
				
            } //fin del isset $_POST['PrestacionesPermitidas']
                
		$this->render('create',array(
			'model'=>$model,'idNomencladorUso'=>$idNomencladorUso,
		));
            }
            catch(Exception $e){  
                Yii::app()->user->setFlash('resultado_carga','Se ha producido un Error en la Carga POR FAVOR intente Nuevamente!!! <br /> ' . $e);
                $transaction->rollBack();
                $this->redirect(array('nomenclador/misNomencladores')); 
            }   
	} // FIN actionCargarPrestacionesPermitidas
        
              
        
       
        
        
        /*
         * Accion que es llamada a traves d euna peticion ajax, por consecuencia de un colbkack por lalmdo
         * ajax de un combobox.
         * 
         * Esta accion se encarga de buscar todas las prestaciones Permitidas es decir los OBJETOS DE LA PRESTACION, del tipo
         * de PRESTACION selecionado en el combo que lo llamo.
         */
      
        public function actionVolcarObjetoPrestacion(){
            $cat_id = (int)$_POST['PrestacionesPermitidas']['categoria_prestacion'];
            $criteria = new CDbCriteria();
            $criteria->condition = "id_categoriaprestacion=:ctg_id";
            $criteria->params = array(':ctg_id' => $cat_id);
            $criteria->order = 'codigo';
            $data = Prestaciones::model()->findAll($criteria);
 
		
		   echo CHtml::tag('option',
                   array('value'=>""),CHtml::encode("SELECCIONE TIPO PRESTACION"),true);
		
                   
               foreach($data as $key)
			{
			echo CHtml::tag('option',array('value'=>$key->id),CHtml::encode($key->codigo .  " - " . $key->descripcion),true);
		}
            
        }
        
        
       
         public function actionCargarDescripcionPrestacion(){           
            $data = Prestaciones::model()->find('id=:ctg_id',             
            array(':ctg_id'=>(int)$_POST['PrestacionesPermitidas']['id_prestacion']));	
            $data['descripcion'] =    $data->descripcion;
            $data['precio'] =    $data->precio;

            echo CJSON::encode(  
                $data                   
                );               
            exit;           
       }
       
       public function actionBuscarTrazadoras(){      
          if ( (isset($_POST['patologia'])) && (isset($_POST['objetoprestacion'])) ){  
             $id_patologia_prestacionreal =  explode('-/-',$_POST['patologia']);             
             $id_prestacion = (int) $_POST['objetoprestacion'];
             $grupoetareo =   (int) $_POST['grupoetareo'];;
             $id_patologia      = $id_patologia_prestacionreal[0];
             $id_prestacionreal = $id_patologia_prestacionreal[1]; 
             
             $criteria = new CDbCriteria();
                    
             $data = PrestacionesPermitidas::model()->findByPk($id_prestacionreal);		
             $resultado = "0";
            
             if (!empty($data)){
                if ($data->requiere_trazadora > 0)                      
                   $resultado = $data->requiere_trazadora;
                else
                   $resultado = 0;
             }          
           
              echo CJSON::encode(array(
                         "resultado"=>$resultado, 
                          ));
                     exit;
          }
         } //FIN DEL ACTIONBUSCARTRAZADORAS
         
         
         
         
          public function actionAdministracion(){    
              
             $idnomenclador = $_GET["idnomenclador"];
             $nomenclador = Nomenclador::model()->findbyPk($idnomenclador);
            
             $this->layout = '//layouts/column1';
             $model = new PrestacionesPermitidas('search');
             $model->unsetAttributes();  
	     
             
               
            $tbl_prestaciones =  Prestaciones::model()->tablename();
            $tbl_categoriaprestaciones = CategoriaPrestaciones::model()->tablename();
            
            $criteria = new CDbCriteria();
            $criteria->join = 'left join '.$tbl_prestaciones.' PRES on PRES.id = t.id_prestacion'  .' left join '.$tbl_categoriaprestaciones.' CATPRES on CATPRES.id = PRES.id_categoriaprestacion';
                    
            $criteria->condition = "CATPRES.id_nomenclador = :nnn";
            $criteria->params = array(':nnn'=> $idnomenclador);
            
              if(isset($_GET['PrestacionesPermitidas'])){
	         $model->attributes=$_GET['PrestacionesPermitidas'];
		 $criteria->compare('id_prestacion',$model->id_prestacion);
		 $criteria->compare('id_patologia',$model->id_patologia);
                 $criteria->compare('grp_patologico',$model->grp_patologico);
		 $criteria->compare('requiere_trazadora',$_GET['requiere_trazadora']);}
            
            $hola =  new CActiveDataProvider(PrestacionesPermitidas, array(
			'criteria'=>$criteria,
		));
            
            $this->render('administracion',array(
			'model'=>$model,
                        'dataprovider'=>$hola,
                        'nomenclador'=>$nomenclador
		));
         } 

	
}
